exports.cdnBaseHttp = 'https://cdn.bootcss.com';

// external配置
exports.externalConfig = [
    { name: 'vue', scope: 'Vue', js: 'vue.min.js' },
    { name: 'vue-router', scope: 'VueRouter', js: 'vue-router.min.js' },
];
// 获取模块版本号
exports.getModulesVersion = () => {
    // console.log('process.env', process.env);
    let mvs = {};
    let regexp = /^npm_package_.{0,3}dependencies_/gi;
    // console.log('regexp', regexp);
    for (let m in process.env) { // 从node内置参数中读取，也可直接import 项目文件进来
        if (regexp.test(m)) { // 匹配模块
            // 获取到模块版本号
            // console.log('mvs的key', m.replace(regexp, '').replace(/_/g, '-'))
            // console.log('mvs的value',process.env[m].replace(/(~|\^)/g, ''));
            mvs[m.replace(regexp, '').replace(/_/g, '-')] = process.env[m].replace(/(~|\^)/g, '');
        }
    }
    // console.log('获取的版本号：',mvs);
    return mvs;
};

exports.getExternalModules = config => {
    // console.log(config);
    let externals = {}; // 结果
    let dependencieModules = this.getModulesVersion(); // 获取全部的模块和版本号
    config = config || this.externalConfig; // 默认使用utils下的配置
    config.forEach(item => { // 遍历配置
        // 判断我们设置的 externalConfig中的模块有无安装到项目版本库中
        if (item.name in dependencieModules) {
            let version = dependencieModules[item.name];
            // 拼接css 和 js 完整链接
            item.css = item.css && [this.cdnBaseHttp, item.name, version, item.css].join('/');
            item.js = item.js && [this.cdnBaseHttp, item.name, version, item.js].join('/');
            externals[item.name] = item.scope; // 为打包时准备
        } else {
            throw new Error('相关依赖未安装，请先执行npm install ' + item.name);
        }
    });
    console.log("getExternalModules处理后的external", externals);
    return externals;
  };
